package com.upbos.sso.entity;


import cn.hutool.extra.servlet.ServletUtil;
import lombok.Data;

import javax.servlet.http.HttpServletRequest;
import java.io.Serializable;


/**
 * <b>Application name：</b> Token.java <br>
 * <b>Application describing： Token 票据</b> <br>
 * <b>Copyright：</b> Copyright &copy; 2018 upbos.com 版权所有。<br>
 * <b>Company：</b> upbos.com <br>
 * <b>Date：</b> 2018年09月24日 10:41 <br>
 * <b>author：</b> <a href="mailto:wangjz@miyzh.com"> wangjz </a> <br>
 * <b>version：</b>V1.0.0 <br>
 */
@Data
public class Token implements Serializable {
    /**
     * token 类型
     */
    private String type;

    /**
     * 主键 ID
     */
    private String id;

    /**
     * 登录 IP
     */
    private String ip;

    /**
     * 用户id
     */
    private String uid;

    /**
     * 创建 sso 当前系统时间
     */
    private long time = System.currentTimeMillis();


    public static Token generateToken(HttpServletRequest request, String uid, String tokenType) {
        Token token = new Token();
        token.setId(TokenId.generate(tokenType, uid));
        token.setType(tokenType);
        token.setUid(uid);
        token.setTime(System.currentTimeMillis());
        token.setIp(ServletUtil.getClientIP(request));

        return token;
    }
}